Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


recipes/mffmpeg/__init__.py f8b3e3760b831745cf10d97aeae64e9c00a136a9 (f8b3e376) Text, 5.55 KB

Tff7b72from T7ee787pythonforandroidT7ee787.T7ee787toolchain Tff7b72import Te6edf3RecipeTb4b4b4, Te6edf3current_directoryTb4b4b4, Te6edf3shprint
Tff7b72from T7ee787osT7ee787.T7ee787path Tff7b72import Te6edf3existsTb4b4b4, Te6edf3joinTb4b4b4, Te6edf3realpath
Tff7b72import T7ee787sh


Tff7b72class T56d364FFMpegRecipeTb4b4b4(Te6edf3RecipeTb4b4b4)Tb4b4b4:
Te6edf3version Tff7b72= Ta5d6ff'Ta5d6ffn4.3.1Ta5d6ff'
T8b949e# Moved to github.com instead of ffmpeg.org to improve download speed
Te6edf3url Tff7b72= Ta5d6ff'Ta5d6ffhttps://github.com/FFmpeg/FFmpeg/archive/Tffd700{version}Ta5d6ff.zipTa5d6ff'
Te6edf3depends Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ffsdl2Ta5d6ff'Tb4b4b4] T8b949e# Need this to build correct recipe order
Te6edf3opts_depends Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ffopensslTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffffpyplayer_codecsTa5d6ff'Tb4b4b4]
Te6edf3patches Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ffpatches/configure.patchTa5d6ff'Tb4b4b4]

Tff7b72def Td2a8ffshould_buildTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3archTb4b4b4)Tb4b4b4:
Te6edf3build_dir Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_build_dirTb4b4b4(Te6edf3archTff7b72.Td2a8ffarchTb4b4b4)
Tff7b72return Tff7b72not Te6edf3existsTb4b4b4(Te6edf3joinTb4b4b4(Te6edf3build_dirTb4b4b4, Ta5d6ff'Ta5d6fflibTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6fflibavcodec.soTa5d6ff'Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffprebuild_archTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3archTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapply_patchesTb4b4b4(Te6edf3archTb4b4b4)

Tff7b72def Td2a8ffget_recipe_envTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3archTb4b4b4)Tb4b4b4:
Te6edf3env Tff7b72= Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffget_recipe_envTb4b4b4(Te6edf3archTb4b4b4)
Te6edf3envTb4b4b4[Ta5d6ff'Ta5d6ffNDKTa5d6ff'Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffctxTff7b72.Td2a8ffndk_dir
Tff7b72return Te6edf3env

Tff7b72def Td2a8ffbuild_archTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3archTb4b4b4)Tb4b4b4:
Tff7b72with Te6edf3current_directoryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffget_build_dirTb4b4b4(Te6edf3archTff7b72.Td2a8ffarchTb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3env Tff7b72= Te6edf3archTff7b72.Td2a8ffget_envTb4b4b4(Tb4b4b4)

T8b949e# flags = ['--disable-everything']
Te6edf3flags Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3cflags Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3ldflags Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72if Ta5d6ff'Ta5d6ffopensslTa5d6ff' Tff7b72in Tff7b72selfTff7b72.Td2a8ffctxTff7b72.Td2a8ffrecipe_build_orderTb4b4b4:
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[
Ta5d6ff'Ta5d6ff--enable-opensslTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-nonfreeTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-protocol=https,tls_opensslTa5d6ff'Tb4b4b4,
Tb4b4b4]
Te6edf3build_dir Tff7b72= Te6edf3RecipeTff7b72.Td2a8ffget_recipeTb4b4b4(
Ta5d6ff'Ta5d6ffopensslTa5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffctxTb4b4b4)Tff7b72.Td2a8ffget_build_dirTb4b4b4(Te6edf3archTff7b72.Td2a8ffarchTb4b4b4)
Te6edf3cflags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff-ITa5d6ff' Tff7b72+ Te6edf3build_dir Tff7b72+ Ta5d6ff'Ta5d6ff/include/Ta5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff-DOPENSSL_API_COMPAT=0x10002000LTa5d6ff'Tb4b4b4]
Te6edf3ldflags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff-LTa5d6ff' Tff7b72+ Te6edf3build_dirTb4b4b4]

Tff7b72if Ta5d6ff'Ta5d6ffffpyplayer_codecsTa5d6ff' Tff7b72in Tff7b72selfTff7b72.Td2a8ffctxTff7b72.Td2a8ffrecipe_build_orderTb4b4b4:
T8b949e# Enable GPL
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff--enable-gplTa5d6ff'Tb4b4b4]

T8b949e# libx264
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff--enable-libx264Ta5d6ff'Tb4b4b4]
Te6edf3build_dir Tff7b72= Te6edf3RecipeTff7b72.Td2a8ffget_recipeTb4b4b4(
Ta5d6ff'Ta5d6fflibx264Ta5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffctxTb4b4b4)Tff7b72.Td2a8ffget_build_dirTb4b4b4(Te6edf3archTff7b72.Td2a8ffarchTb4b4b4)
Te6edf3cflags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff-ITa5d6ff' Tff7b72+ Te6edf3build_dir Tff7b72+ Ta5d6ff'Ta5d6ff/include/Ta5d6ff'Tb4b4b4]
Te6edf3ldflags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff-lx264Ta5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff-LTa5d6ff' Tff7b72+ Te6edf3build_dir Tff7b72+ Ta5d6ff'Ta5d6ff/lib/Ta5d6ff'Tb4b4b4]

T8b949e# libshine
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff--enable-libshineTa5d6ff'Tb4b4b4]
Te6edf3build_dir Tff7b72= Te6edf3RecipeTff7b72.Td2a8ffget_recipeTb4b4b4(Ta5d6ff'Ta5d6fflibshineTa5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffctxTb4b4b4)Tff7b72.Td2a8ffget_build_dirTb4b4b4(Te6edf3archTff7b72.Td2a8ffarchTb4b4b4)
Te6edf3cflags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff-ITa5d6ff' Tff7b72+ Te6edf3build_dir Tff7b72+ Ta5d6ff'Ta5d6ff/include/Ta5d6ff'Tb4b4b4]
Te6edf3ldflags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff-lshineTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff-LTa5d6ff' Tff7b72+ Te6edf3build_dir Tff7b72+ Ta5d6ff'Ta5d6ff/lib/Ta5d6ff'Tb4b4b4]
Te6edf3ldflags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff-lmTa5d6ff'Tb4b4b4]

T8b949e# libvpx
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff--enable-libvpxTa5d6ff'Tb4b4b4]
Te6edf3build_dir Tff7b72= Te6edf3RecipeTff7b72.Td2a8ffget_recipeTb4b4b4(
Ta5d6ff'Ta5d6fflibvpxTa5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffctxTb4b4b4)Tff7b72.Td2a8ffget_build_dirTb4b4b4(Te6edf3archTff7b72.Td2a8ffarchTb4b4b4)
Te6edf3cflags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff-ITa5d6ff' Tff7b72+ Te6edf3build_dir Tff7b72+ Ta5d6ff'Ta5d6ff/include/Ta5d6ff'Tb4b4b4]
Te6edf3ldflags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff-lvpxTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff-LTa5d6ff' Tff7b72+ Te6edf3build_dir Tff7b72+ Ta5d6ff'Ta5d6ff/lib/Ta5d6ff'Tb4b4b4]

T8b949e# Enable all codecs:
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[
Ta5d6ff'Ta5d6ff--enable-parsersTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-decodersTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-encodersTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-muxersTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-demuxersTa5d6ff'Tb4b4b4,
Tb4b4b4]
Tff7b72elseTb4b4b4:
T8b949e# Enable codecs only for .mp4:
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[
Ta5d6ff'Ta5d6ff--enable-parser=aac,ac3,h261,h264,mpegaudio,mpeg4video,mpegvideo,vc1Ta5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-decoder=aac,h264,mpeg4,mpegvideoTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-muxer=h264,mov,mp4,mpeg2videoTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-demuxer=aac,h264,m4v,mov,mpegvideo,vc1,rtspTa5d6ff'Tb4b4b4,
Tb4b4b4]

T8b949e# needed to prevent _ffmpeg.so: version node not found for symbol av_init_packet@LIBAVFORMAT_52
T8b949e# /usr/bin/ld: failed to set dynamic section sizes: Bad value
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[
Ta5d6ff'Ta5d6ff--disable-symverTa5d6ff'Tb4b4b4,
Tb4b4b4]

T8b949e# disable binaries / doc
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[
T8b949e# '--disable-programs',
Ta5d6ff'Ta5d6ff--disable-docTa5d6ff'Tb4b4b4,
Tb4b4b4]

T8b949e# other flags:
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[
Ta5d6ff'Ta5d6ff--enable-filter=aresample,resample,crop,adelay,volume,scaleTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-protocol=file,http,hls,udp,tcpTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-smallTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-hwaccelsTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-picTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--disable-staticTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--disable-debugTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-sharedTa5d6ff'Tb4b4b4,
Tb4b4b4]

Tff7b72if Ta5d6ff'Ta5d6ffarm64Ta5d6ff' Tff7b72in Te6edf3archTff7b72.Td2a8ffarchTb4b4b4:
Te6edf3arch_flag Tff7b72= Ta5d6ff'Ta5d6ffaarch64Ta5d6ff'
Tff7b72elif Ta5d6ff'Ta5d6ffx86Ta5d6ff' Tff7b72in Te6edf3archTff7b72.Td2a8ffarchTb4b4b4:
Te6edf3arch_flag Tff7b72= Ta5d6ff'Ta5d6ffx86Ta5d6ff'
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff--disable-asmTa5d6ff'Tb4b4b4]
Tff7b72elseTb4b4b4:
Te6edf3arch_flag Tff7b72= Ta5d6ff'Ta5d6ffarmTa5d6ff'

T8b949e# android:
Te6edf3flags Tff7b72+Tff7b72= Tb4b4b4[
Ta5d6ff'Ta5d6ff--target-os=androidTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-cross-compileTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--cross-prefix=Tffd700{}Ta5d6ff-Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3archTff7b72.Td2a8fftargetTb4b4b4)Tb4b4b4,
Ta5d6ff'Ta5d6ff--arch=Tffd700{}Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3arch_flagTb4b4b4)Tb4b4b4,
Ta5d6ff'Ta5d6ff--strip=Tffd700{}Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Tff7b72selfTff7b72.Td2a8ffctxTff7b72.Td2a8ffndkTff7b72.Td2a8ffllvm_stripTb4b4b4)Tb4b4b4,
Ta5d6ff'Ta5d6ff--sysroot=Tffd700{}Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Tff7b72selfTff7b72.Td2a8ffctxTff7b72.Td2a8ffndkTff7b72.Td2a8ffsysrootTb4b4b4)Tb4b4b4,
Ta5d6ff'Ta5d6ff--enable-neonTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff--prefix=Tffd700{}Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3realpathTb4b4b4(Ta5d6ff'Ta5d6ff.Ta5d6ff'Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]

Tff7b72if Te6edf3arch_flag Tff7b72== Ta5d6ff'Ta5d6ffarmTa5d6ff'Tb4b4b4:
Te6edf3cflags Tff7b72+Tff7b72= Tb4b4b4[
Ta5d6ff'Ta5d6ff-mfpu=vfpv3-d16Ta5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff-mfloat-abi=softfpTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ff-fPICTa5d6ff'Tb4b4b4,
Tb4b4b4]

Te6edf3envTb4b4b4[Ta5d6ff'Ta5d6ffCFLAGSTa5d6ff'Tb4b4b4] Tff7b72+Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff' Tff7b72+ Ta5d6ff'Ta5d6ff Ta5d6ff'Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3cflagsTb4b4b4)
Te6edf3envTb4b4b4[Ta5d6ff'Ta5d6ffLDFLAGSTa5d6ff'Tb4b4b4] Tff7b72+Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff' Tff7b72+ Ta5d6ff'Ta5d6ff Ta5d6ff'Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3ldflagsTb4b4b4)

Te6edf3configure Tff7b72= Te6edf3shTff7b72.Td2a8ffCommandTb4b4b4(Ta5d6ff'Ta5d6ff./configureTa5d6ff'Tb4b4b4)
Te6edf3shprintTb4b4b4(Te6edf3configureTb4b4b4, Tff7b72*Te6edf3flagsTb4b4b4, Te6edf3_envTff7b72=Te6edf3envTb4b4b4)
Te6edf3shprintTb4b4b4(Te6edf3shTff7b72.Td2a8ffmakeTb4b4b4, Ta5d6ff'Ta5d6ff-j4Ta5d6ff'Tb4b4b4, Te6edf3_envTff7b72=Te6edf3envTb4b4b4)
Te6edf3shprintTb4b4b4(Te6edf3shTff7b72.Td2a8ffmakeTb4b4b4, Ta5d6ff'Ta5d6ffinstallTa5d6ff'Tb4b4b4, Te6edf3_envTff7b72=Te6edf3envTb4b4b4)
T8b949e# copy libs:
Te6edf3shTff7b72.Td2a8ffcpTb4b4b4(Ta5d6ff'Ta5d6ff-aTa5d6ff'Tb4b4b4, Te6edf3shTff7b72.Td2a8ffglobTb4b4b4(Ta5d6ff'Ta5d6ff./lib/lib*.soTa5d6ff'Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffctxTff7b72.Td2a8ffget_libs_dirTb4b4b4(Te6edf3archTff7b72.Td2a8ffarchTb4b4b4)Tb4b4b4)


Te6edf3recipe Tff7b72= Te6edf3FFMpegRecipeTb4b4b4(Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────